Modern service provider systems are often implemented in a distributed and layered fashion, employing a frontend layer of request routing nodes tasked with forwarding received requests to a backend layer of server nodes. In many cases, the workload level of a system may vary substantially over time, with new server nodes being added or removed as needed based on various scaling policies of the system and/or the network-accessible services being employed by the system. Often, the workload may comprise units of work which can be performed largely independently of one another by individual server nodes. In some systems, hundreds or thousands of server nodes may be configured for a given application. In many such systems, the request routing nodes may act as load balancers to distribute work units equitably among the back-end worker nodes.
In some systems, newer versions of services may be developed to replace existing versions. However, such newer versions are often inherently less safe than older versions, as they have not been exposed to the same amount of real-world request traffic as the older versions. Thus, the deployment of new service versions in such systems often represents a balance between risk and innovation. Some systems may employ costly risk mitigation techniques such as timed deployments, which may entail long “bake times” for new deployments and slow deployment cycles. In some cases, these staged deployment strategies ironically contribute to the risk by increasing the complexity of the deployment process.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.
It will also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, without departing from the scope of the present invention. The first contact and the second contact are both contacts, but they are not the same contact.